package com.example.jetpackcomposebasic

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.Layout
import androidx.compose.ui.unit.dp


@Composable
fun UseMyOwnColumn() {

    MyOwnColumn(Modifier.padding(20.dp)) {
        Text(text = "第一行文字")
        Text(text = "我是第二")
        Text(text = "我是倒数第一")
    }
}

/**
 * 使用 layout 实现 column 组件的效果
 */
@Composable
fun MyOwnColumn(modifier: Modifier,composable: @Composable () -> Unit) {

    Layout( composable,modifier) { measurables, constraints ->

        // 根据约束，测量每一个可放置的元素
        val placeables = measurables.map { it.measure(constraints) }

        // 设置 Layout 布局所占据的位置
        layout(constraints.maxWidth, constraints.maxHeight) {

            var y = 0

            placeables.forEach {

                // 把子元素放置在指定位置
                it.place(0, y)

                // 保存偏移量
                y += it.height
            }
        }
    }


}